package com.yunhe.authority.repository.company;

import com.yunhe.authority.domain.company.Company;
import com.yunhe.authority.model.CompanyUpload;
import com.yunhe.common.model.PageParam;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface CompanyRepository {

    /**
     * 根据ID获得企业
     * @param companyId 企业ID
     */
    Company findById(Long companyId);

    /**
     * 根据电站ID获得所有设备列表
     * @param stationId 电站ID
     */
    List<Company> findByStationId(Long stationId);

    /**
     * 根据真实园区ID获得所有企业列表
     * @param realStationId 真实园区ID
     */
    List<Company> findByRealStationId(Long realStationId);

    /**
     * 根据单位ID获得设备对象列表
     * @param firmId 单位ID
     */
    List<Company> findByFirmId(Long firmId);

    /**
     * 获得所有企业
     */
    List<Company> findAll();

    /**
     * 解绑所有office
     */
    List<Company> unbindAllOffice(Long id);

    Page<CompanyUpload> findAllForPage(PageParam pageParam);

    /**
     * 根据真实园区id查询企业列表
     * @param id 真实园区ID
     */
    Page<Company> findCompaniesByRealStationId(@Param("searchKey")String searchKey, @Param("id") Long id, PageParam pageParam);

    /**
     * 根据真实园区id查询企业列表
     * @param id 真实园区ID
     */
    Iterable<Company> findListCompaniesByRealStationId(@Param("id") Long id);

    /**
     * 根据总园区id查询企业列表
     * @param id 真实园区ID
     */
    Page<Company> findCompaniesByStationId(@Param("searchKey")String searchKey, @Param("id") Long id, PageParam pageParam);
}
